การใช้วิธี ครอส-เอนโทรปี ในปัญหาการประมาณค่า ของ วิธีการครอส-เอนโทรปี

แนวคิด

ในกรณีที่เราพยายามที่จะใช้วิธีครอส-เอนโทรปีเพื่อประมาณค่านั้น สามารถแปลงปัญหาเป็นสมการคณิตศาสตร์ของการประมาณหาค่าคาดหวังง่ายๆได้ดังสมการที่ (1)

ℓ = E f [ H ( X ) ] = ∫ H ( x ) f ( x ) d x {\displaystyle \ell =\mathbb {E} _{f}[H(X)]=\int H(x)f(x)\,dx} (1)

เมื่อ H คือฟังก์ชันที่เราต้องการประมาณค่า เรียกได้อีกอย่างหนึ่งว่า ฟังก์ชันของประสิทธิภาพของตัวอย่างสุ่ม
และ f คือฟังก์ชันของความหนาแน่นของความน่าจะเป็นของตัวแปรสุ่ม X

ซึ่งสำหรับวิธีการประมาณค่า l {\displaystyle l} ในสมการที่ 1 นั้น ในกรณีที่สามารถสุ่มตัวอย่างสุ่มด้วยความหนาแน่นของความน่าจะเป็น f ( x ) {\displaystyle f(x)} ได้ยาก จะทำการสร้างฟังก์ชัน f ( x ) {\displaystyle f(x)} เพื่อที่จะสามารถประมาณค่าได้ง่ายขึ้นตามสมการที่ 2

ℓ = ∫ H ( x ) f ( x ) g ( x ) g ( x ) d x = E g [ H ( x ) f ( x ) g ( x ) ] {\displaystyle \ell =\int H(x){\frac {f(x)}{g(x)}}g(x)\,dx=\mathbb {E} _{g}[H(x){\frac {f(x)}{g(x)}}]} (2)

โดยที่กำหนดให้

g ( x ) = 0 {\displaystyle g(x)=0\,} เมื่อ H ( x ) f ( x ) = 0 {\displaystyle H(x)f(x)=0\,}

เนื่องจาก g เป็นความหนาแน่นของความน่าจะเป็นที่เราเป็นคนสร้างขึ้น ทำให้การสุ่มตัวอย่างเป็นไปได้ง่ายกว่า f ดังนั้น เราจึงสามารถสุ่มตัวอย่างสุ่ม X 1 , . . . , X N {\displaystyle X_{1},...,X_{N}} ตามความหนาแน่นของความน่าจะเป็นของ g(x) ได้ง่ายกว่า ทำให้ประมาณค่าของ l ด้วยตัวประมาณค่าที่ไม่ลำเอียงได้ง่ายขึ้นตามสมการที่ (3)

ℓ ^ = 1 N ∑ k = 1 N H ( X k ) f ( X k ) g ( X k ) {\displaystyle {\widehat {\ell }}={\frac {1}{N}}\sum _{k=1}^{N}H(X_{k}){\frac {f(X_{k})}{g(X_{k})}}} (3)

จากปัญหาการประมาณค่า ก็จะเหลือแค่ปัญหาว่าจะสร้างความหนาแน่นของความน่าจะเป็น g ที่ดีที่สุดได้อย่างไรซึ่งค่า g ที่ดีที่สุดในอุดมคตินั้นนิยามด้วย

g ∗ ( x ) α | H ( x ) | f ( x ) {\displaystyle g^{*}(x)\alpha |H(x)|f(x)\,}

แต่สิ่งที่เกิดขึ้นก็คือ เราสามารถหาค่า g*(x) ได้ยาก สำหรับวิธีครอส-เอนโทรปีนี้แทนที่จะมุ่งไปที่การหาค่าของ g*(x) จะพยายามหาค่าของ g ที่ทำให้ความแตกต่างระหว่าง g และ g* น้อยที่สุด ซึ่งความแตกต่างนั้นเองที่เรียกว่าครอส-เอนโทรปีตามที่เกริ่นไว้ในช่วงต้น ซึ่งครอส-เอนโทรปีของความหนาแน่นของความน่าจะเป็นของสองฟังก์ชันนั้น นิยามได้ดังสมการที่ (4)

D ( f , g ) = E f [ l n f ( X ) g ( X ) ] = ∫ f ( x ) l n ( f ( x ) ) d x − ∫ f ( x ) l n ( g ( x ) ) d x {\displaystyle D(f,g)=\mathbb {E} _{f}[ln{\frac {f(X)}{g(X)}}]=\int f(x)ln(f(x))dx-\int f(x)ln(g(x))dx} (4)
หลังจากที่ได้รู้หลักการคร่าวๆของวิธีการครอส-เอนโทรปีเพื่อการประมาณค่าในทางทฤษฎีไปแล้วว่าเป็นไปในลักษณะอย่างไร หากพิจารณาในทางปฏิบัติแล้วนั้นฟังก์ชัน f นอกจากจะแปรไปตามตัวแปรต้น x แล้ว ยังถูกควบคุมโดยพารามิเตอร์ u บางอย่าง ซึ่งสามารถเขียนฟังก์ชัน f ได้เป็น f(x; u) ซึ่งคงเดาได้ไม่ยากว่าบางกรณีนั้น พารามิเตอร์ u นี้หาได้ยากมาก เราจึงพยายามหาค่าของ g ที่ทำให้มี v ที่ทำให้ g(x) = f(x; v) และ v ทำให้ความแตกต่างของ f(x; v) และ f(x; u) น้อยๆ ซึ่งความแตกต่างนี้วัดโดยครอส-เอนโทรปีตามสมการที่ 4 นั่นเอง ก็จะทำให้ปัญหาเล็กลงอีกขั้นหนึ่งคือเป็นปัญหาที่จะพยายามหาค่าของ v ที่ดีที่สุดเท่านั้น ซึ่งนิยาม v ในอุดมคติว่า v* ลองไปแทนค่าของ f(x; v) และ f(x; u) ลงในสมการที่ (4) แล้วจัดรูปสักเล็กน้อยก็จะรู้ว่า v ที่ดีที่สุดจะทำให้ ∫ H ( x ) f ( x ; u ) l n ( f ( x ; v ) ) d x {\displaystyle \int H(x)f(x;u)ln(f(x;v))dx\,} มีค่ามากที่สุดนั่นเอง ซึ่งการแก้ปัญหานี้ก็สามารถหาได้ตามสมการที่ (5) m a x v ( 1 N ∑ k = 1 N H ( X k ) f ( X k ; u ) f ( X k ; w ) l n ( f ( X k ; v ) ) {\displaystyle max_{v}({\frac {1}{N}}\sum _{k=1}^{N}H(X_{k}){\frac {f(X_{k};u)}{f(X_{k};w)}}ln(f(X_{k};v))\,} (5)

ซึ่งจากสมการที่ (5) R. Y. Rubinstein ได้นำเสนอวิธีสำหรับแก้ปัญหานี้ไว้แล้ว[4]
ในปัญหาเฉพาะที่ชื่อว่าปัญหาการหาความน่าจะเป็นของเหตุการณ์ที่พบเจอได้ยาก(rare event probability) ซึ่งเป็นปัญหาที่ประยุกต์ด้วยวิธีครอส-เอนโทรปีกันอย่างแพร่หลาย โดยเป็นกรณีเฉพาะที่ฟังก์ชัน H เป็นฟังก์ชันตัวชี้ของฟังก์ชัน S ( x ) {\displaystyle S(x)} วัดที่ระดับ γ {\displaystyle \gamma } ตามสมการ H ( x ) = I S ( X ) ≥ γ {\displaystyle H(x)=I_{S(X)\geq \gamma }} ซึ่งในการประมาณค่าของ ℓ {\displaystyle \ell } ด้วยวิธีเดิมเพื่อหาความน่าจะเป็นที่ S ( x ) ≥ γ {\displaystyle S(x)\geq \gamma } นั้นจะยากโดยดูได้จากสมการที่ (5) คือค่าของ H ( X k ) {\displaystyle H(X_{k})} ส่วนมากจะมีค่าเป็น 0 ไปมากพอสมควรจะไม่สามารถประมาณหาค่าที่แม่นยำได้ วิธีการแก้ไขคือต้องทำวิธีการ ครอส-เอนโทรปีหลายๆรอบ หลายๆชั้น โดยจะปรับค่าพารามิเตอร์ v และระดับปัจจุบันให้เข้าใกล้ v* และ γ {\displaystyle \gamma } ไปเรื่อยๆจนถึงเงื่อนไขยุติที่พอใจ สามารถเขียนขั้นตอนวิธีตามที่ได้อธิบายมาเป็นรหัสเทียมได้ดังนี้

รหัสเทียมสำหรับวิธีครอส-เอนโทรปีเพื่อประมาณความน่าจะเป็นสำหรับเหตุการณ์ที่พบเจอได้ยาก

 1                                                                         v                ^                                                          0                          =        u              {\displaystyle {\widehat {v}}_{0}=u}    และ  2                               N                      e                          =        ⌈        ρ                N        ⌉              {\displaystyle N^{e}=\lceil \rho \,N\rceil }   3 t = 0 /*ตัวนับจำนวนรอบ*/ 4 5 ทำ 6     t = t + 1 7     สุ่มตัวอย่างสุ่ม                               X                      1                          ,        .        .        .        ,                  X                      N                                        {\displaystyle X_{1},...,X_{N}\,}   ตามความหนาแน่นของความน่าจะเป็น                     f        (        −        :                                                            v                ^                                                          t            −            1                          )                      {\displaystyle f(-:{\widehat {v}}_{t-1})\,}   8     สำหรับทุก i ตั้งแต่ 1 ถึง N 9                                       S                      (            i            )                          =        S        (                  X                      i                          )                      {\displaystyle S_{(i)}=S(X_{i})\,}  10     เรียงลำดับจากน้อยไปหามาก(S)        11                                                                             γ                ^                                                          t                          =                  S                      (            N            −                          N                              e                                      +            1            )                                        {\displaystyle {\widehat {\gamma }}_{t}=S_{(N-N^{e}+1)}\,}  12                                                                             γ                ^                                                          t                                        {\displaystyle {\widehat {\gamma }}_{t}\,}   = ค่าต่ำสุด(                    γ                      {\displaystyle \gamma \,}  ,                                                                        γ                ^                                                          t                                {\displaystyle {\widehat {\gamma }}_{t}}  )13     คำนวณ                                                                         v                ^                                                          t                                {\displaystyle {\widehat {v}}_{t}}   จากสมการ (5) ด้วย                               X                      1                          ,        .        .        .        ,                  X                      N                                {\displaystyle X_{1},...,X_{N}}   และ                     w        =                                                            v                ^                                                          t            −            1                                {\displaystyle w={\widehat {v}}_{t-1}}  14 ระหว่างที่                                                                         γ                ^                                                          t                          <        γ              {\displaystyle {\widehat {\gamma }}_{t}<\gamma }             1516 สุ่มตัวอย่างสุ่ม                               X                      1                          ,        .        .        .        ,                  X                                    N                              1                                                                  {\displaystyle X_{1},...,X_{N_{1}}\,}   ตามความหนาแน่นของความน่าจะเป็น                     f        (        −        :                                                            v                ^                                                          t                          )              {\displaystyle f(-:{\widehat {v}}_{t})}  17 คำนวณ                     ℓ              {\displaystyle \ell }   จากสมการ (3) ด้วย                               X                      1                          ,        .        .        .        ,                  X                                    N                              1                                                                  {\displaystyle X_{1},...,X_{N_{1}}\,}  18 คืนค่า                     ℓ              {\displaystyle \ell }  

จะเห็นว่าหากต้องการใช้ขั้นตอนวิธีนี้ต้องทำการปรับค่า v ^ 0 , N , ρ {\displaystyle {\widehat {v}}_{0},N,\rho } ให้เหมาะสมกับความต้องการ ซึ่งโดยปกติ ρ {\displaystyle \rho } จะมีค่าอยู่ระหว่าง 0.01 และ 0.1 และค่าของ N {\displaystyle N} จะน้อยว่า N 1 {\displaystyle N_{1}} มากๆ เช่น N = 10000 {\displaystyle N=10000} ในขณะที่ N 1 = 100000 {\displaystyle N_{1}=100000} และขั้นตอนวิธีนี้จะรับประกันว่าสามารถทำงานจนจบได้แน่นอนหากค่าของ ρ {\displaystyle \rho } มีค่าเล็กมากพอ

ใกล้เคียง

วิธีกงดอร์แซ วิธีการเข้าถึงหลายช่องทาง วิธีการครอส-เอนโทรปี วิธีการคำนวณของโจนส์ วิธีการปกครอง วิธีการบังคับต่อประเทศอิหร่าน วิธีการบังคับต่อสหพันธ์สาธารณรัฐยูโกสลาเวีย วิธีการของเพทริค วิธีการบังคับต่อประเทศเกาหลีเหนือ วิธีการประเมินและการตัดสินใจ